#include "etcd.hpp"
#include <gflags/gflags.h>
#include <thread>

// 定义命令行参数
DEFINE_bool(run_mode, false, "程序的运行模式，false-调试；true-发布");
DEFINE_string(log_file, "", "发布模式下，用于指定日志的输出文件");
DEFINE_int32(log_level, 0, "发布模式下指定日志等级");

DEFINE_string(etcd_host, "http://127.0.0.1:2379", "服务注册中心地址");
DEFINE_string(base_service, "/service", "服务监控根目录");
DEFINE_string(instance_name, "/friend/instance", "当前实例名称");

int main(int argc, char *argv[]) {
    // 解析命令行参数
    google::ParseCommandLineFlags(&argc, &argv, true);

    // 初始化日志系统
    init_logger(FLAGS_run_mode, FLAGS_log_file, FLAGS_log_level);

    // 创建服务注册客户端对象
    Registry::ptr rclient = std::make_shared<Registry>(FLAGS_etcd_host);

    // 注册服务
    rclient->registry(FLAGS_base_service + FLAGS_instance_name);

    // 保持程序运行，防止服务注册信息被清理
    std::this_thread::sleep_for(std::chrono::seconds(600));

    return 0;
}
